<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Revision history</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.Histogram">
<link rel="up" href="../index.html" title="Chapter 1. Boost.Histogram">
<link rel="prev" href="rationale.html" title="Rationale">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="histogram.history"></a><a class="link" href="history.html" title="Revision history">Revision history</a>
</h2></div></div></div>
<h4>
<a name="histogram.history.h0"></a>
      <span class="phrase"><a name="histogram.history.boost_1_76"></a></span><a class="link" href="history.html#histogram.history.boost_1_76">Boost
      1.76</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
          Fixes
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                <code class="computeroutput"><span class="identifier">algorithm</span><span class="special">::</span><span class="identifier">reduce</span></code> with <code class="computeroutput"><span class="identifier">crop</span></code>
                now does not remove the counts in flow bins anymore if the selected
                range actually overlaps with the flow bins, making the treatment
                of flow bins consistent with inner bins
              </li>
<li class="listitem">
                <code class="computeroutput"><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">mean</span></code> and <code class="computeroutput"><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_mean</span></code>
                now compute the correct variance when <code class="computeroutput"><span class="keyword">operator</span><span class="special">+=</span></code> was called, for example, when histograms
                with accumulators are added; this was wrong before leading to too
                small variances
              </li>
<li class="listitem">
                detection of weight support in user-defined accumulators was broken
                at compile-time if accumulator used <code class="computeroutput"><span class="keyword">operator</span><span class="special">+=</span></code> instead of <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>; tests only accidentally passed
                for builtin <code class="computeroutput"><span class="identifier">weighted_sum</span></code>
              </li>
</ul></div>
        </li></ul></div>
<h4>
<a name="histogram.history.h1"></a>
      <span class="phrase"><a name="histogram.history.boost_1_75"></a></span><a class="link" href="history.html#histogram.history.boost_1_75">Boost
      1.75</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          Fixes
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                <code class="computeroutput"><span class="identifier">axis</span><span class="special">::</span><span class="identifier">variable</span><span class="special">{{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">}}.</span><span class="identifier">value</span><span class="special">(</span><span class="number">1</span><span class="special">)</span></code>
                now returns 1 instead of NaN
              </li>
<li class="listitem">
                <code class="computeroutput"><span class="identifier">axis</span><span class="special">::</span><span class="identifier">variable</span></code> ctor now throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">invalid_argument</span></code> if one values
                is NaN
              </li>
<li class="listitem">
                Implemented a workaround for a gcc bug (will be fixed upstream in
                gcc-10.x) that occurred when <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
                was included before <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">histogram</span><span class="special">/</span><span class="identifier">axis</span><span class="special">/</span><span class="identifier">traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </li>
<li class="listitem">
                Fixed several new warnings from the latest compiler versions
              </li>
<li class="listitem">
                Fixed warnings that appear when compiling against the C++20 standard
              </li>
</ul></div>
        </li>
<li class="listitem">
          Documentation
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Documented undefined behaviour when value and variance are requested
                for <code class="computeroutput"><span class="identifier">accumulator</span><span class="special">::</span><span class="identifier">mean</span></code> and <code class="computeroutput"><span class="identifier">accumulator</span><span class="special">::</span><span class="identifier">weighted_mean</span></code>
                but the accumulator does not have enough entries to compute them
              </li>
<li class="listitem">
                Added explanation to rationale why axis metadata is checked for equality
              </li>
</ul></div>
        </li>
</ul></div>
<h4>
<a name="histogram.history.h2"></a>
      <span class="phrase"><a name="histogram.history.boost_1_74"></a></span><a class="link" href="history.html#histogram.history.boost_1_74">Boost
      1.74</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          New features
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                New axis <code class="computeroutput"><span class="identifier">boolean</span></code>,
                a special kind of integer axis with only two values and no state
                (except metadata)
              </li>
<li class="listitem">
                Histograms with growing category axes are now addable even if the
                categories differ; the category axis of the output histogram is the
                union of the category axes of the input histograms
              </li>
<li class="listitem">
                Added axis::traits::continuous to match axis::traits::is_continuous
              </li>
</ul></div>
        </li>
<li class="listitem">
          Fixes
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
                <code class="computeroutput"><span class="identifier">metadata</span><span class="special">()</span></code>
                method of builtin axis types now return a mutable reference even
                if the axis is const, as described in the documentation
              </li></ul></div>
        </li>
<li class="listitem">
          Documentation
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Sorted headers in reference and sorted items in namespaces
              </li>
<li class="listitem">
                Removed some internal typenames from templates
              </li>
<li class="listitem">
                Added reference for <code class="computeroutput"><span class="identifier">sample_type</span></code>
              </li>
</ul></div>
        </li>
<li class="listitem">
          Other
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Simplified internal metaprogramming
              </li>
<li class="listitem">
                Replaced Boost Assert with plain cassert
              </li>
</ul></div>
        </li>
</ul></div>
<h4>
<a name="histogram.history.h3"></a>
      <span class="phrase"><a name="histogram.history.boost_1_73"></a></span><a class="link" href="history.html#histogram.history.boost_1_73">Boost
      1.73</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          New features
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                accumulators
                <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
<li class="listitem">
                      New <code class="computeroutput"><span class="identifier">count</span></code> accumulator,
                      a thin wrapper around a primitive arithmetic type; serves as
                      a base class for users who want to add arbitrary metadata to
                      each bin
                    </li>
<li class="listitem">
                      <code class="computeroutput"><span class="identifier">sum</span></code> gained
                      a <code class="computeroutput"><span class="identifier">value</span><span class="special">()</span></code>
                      method for consistency with other accumulators
                    </li>
</ul></div>
              </li>
<li class="listitem">
                algorithm
                <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
<li class="listitem">
                      <code class="computeroutput"><span class="identifier">reduce</span></code>
                      <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
                            Now supports positional commands
                          </li>
<li class="listitem">
                            <code class="computeroutput"><span class="identifier">category</span></code>
                            axis now supports <code class="computeroutput"><span class="identifier">slice</span></code>
                            command
                          </li>
<li class="listitem">
                            Added <code class="computeroutput"><span class="identifier">crop</span></code>
                            command, like <code class="computeroutput"><span class="identifier">shrink</span></code>,
                            but discards content of removed bins
                          </li>
<li class="listitem">
                            Renamed <code class="computeroutput"><span class="identifier">reduce_option</span></code>
                            to <code class="computeroutput"><span class="identifier">reduce_command</span></code>
                            (old name available but deprecated)
                          </li>
</ul></div>
                    </li>
<li class="listitem">
                      <code class="computeroutput"><span class="identifier">sum</span></code> gained
                      a new argument, allowing users to select whether to sum over
                      all bins or only the inner bins (excluding underflow and overflow)
                    </li>
</ul></div>
              </li>
<li class="listitem">
                axis::traits
                <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
<li class="listitem">
                      Added traits <code class="computeroutput"><span class="identifier">is_ordered</span></code>
                      and <code class="computeroutput"><span class="identifier">ordered</span></code>
                      to distinguish between different kinds of DiscreteAxis types;
                      used internally to handle <code class="computeroutput"><span class="identifier">category</span></code>
                      axis and <code class="computeroutput"><span class="identifier">integer</span></code>
                      axis differently
                    </li>
<li class="listitem">
                      Renamed <code class="computeroutput"><span class="identifier">static_options</span></code>
                      to <code class="computeroutput"><span class="identifier">get_options</span></code>
                      and <code class="computeroutput"><span class="identifier">static_is_inclusive</span></code>
                      to <code class="computeroutput"><span class="identifier">is_inclusive</span></code>
                      (old names available but deprecated)
                    </li>
</ul></div>
              </li>
</ul></div>
        </li>
<li class="listitem">
          Fixes
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Fixed failing ODR test in bundled Boost due to wrong paths
              </li>
<li class="listitem">
                Fixed a bug in histogram::operator*= that could occur in user-defined
                accumulators
              </li>
<li class="listitem">
                Fixed a bug in <code class="computeroutput"><span class="identifier">indexed</span></code>
                which could cause arithmetic past the end position
              </li>
<li class="listitem">
                Fixed a bug where the variance in <code class="computeroutput"><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_sum</span></code>
                was not correctly computed if a normal histogram was added to the
                histogram that used <code class="computeroutput"><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">weighted_sum</span></code>
              </li>
<li class="listitem">
                Fixed a bug where compiling with <code class="computeroutput"><span class="special">-</span><span class="identifier">ffast</span><span class="special">-</span><span class="identifier">math</span></code> would break <code class="computeroutput"><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">sum</span></code>
              </li>
<li class="listitem">
                Fixed <code class="computeroutput"><span class="identifier">algorithm</span><span class="special">::</span><span class="identifier">reduce</span></code> to work with axes without
                *flow bins, which did not compile before
              </li>
</ul></div>
        </li>
<li class="listitem">
          Other
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Added an example and documentation on how to use Boost.Histogram
                as a backend
              </li>
<li class="listitem">
                Improved the docs on how to use custom accumulators and Boost.Accumulators
              </li>
<li class="listitem">
                Many small documentation improvements
              </li>
<li class="listitem">
                Improved docs for <code class="computeroutput"><span class="identifier">algorithm</span><span class="special">::</span><span class="identifier">reduce</span></code>
              </li>
<li class="listitem">
                Improved experimental cmake build support
              </li>
<li class="listitem">
                Use <code class="computeroutput"><span class="identifier">index_type</span></code> consistently
                everywhere instead of raw <code class="computeroutput"><span class="keyword">int</span></code>
              </li>
<li class="listitem">
                Benchmark update in the docs
              </li>
</ul></div>
        </li>
</ul></div>
<h4>
<a name="histogram.history.h4"></a>
      <span class="phrase"><a name="histogram.history.boost_1_72"></a></span><a class="link" href="history.html#histogram.history.boost_1_72">Boost
      1.72</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          New features
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Better deduction guides for axis types and histogram type on C++17
                compilers
              </li>
<li class="listitem">
                performance improvements in the indexing code
              </li>
<li class="listitem">
                new histogram::fill method for accelerated filling from chunks of
                values
              </li>
<li class="listitem">
                ASCII bar charts for 1D histograms when boost/histogram/ostream.hpp
                is included (contributed by Przemyslaw Bartosik)
              </li>
<li class="listitem">
                Passing invalid axis options causes user-friendly compile-time errors
              </li>
<li class="listitem">
                Wrong usage of weight() and sample() causes user-friendly compile-time
                errors
              </li>
<li class="listitem">
                algorithm::empty returns true if all histogram values are equal to
                the default value (contributed by Henry Schreiner)
              </li>
<li class="listitem">
                algorithm::reduce with shrink is now well defined when values are
                not bin edges
              </li>
<li class="listitem">
                axis::traits::rank returns the number of values that this axis accepts
              </li>
<li class="listitem">
                axis::traits::is_continuous returns whether an axis is continuous
                or discrete
              </li>
<li class="listitem">
                axis::traits::is_inclusive returns whether an axis has a bin for
                any possible input
              </li>
<li class="listitem">
                limited weight support for mean accumulator
              </li>
<li class="listitem">
                accumulators::weighted_mean::sum_of_weights_squared method added
              </li>
</ul></div>
        </li>
<li class="listitem">
          Fixes
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Support of -std=c++2a and -stdlib=libc++ on clang, compatibility
                with gcc-9
              </li>
<li class="listitem">
                Fixed: weight could be passed instead of a sample during filling
                without triggering an error
              </li>
<li class="listitem">
                Fixed: segfault when too many indices were passed to algorithm::project
              </li>
<li class="listitem">
                Fixed: indexed range generator did not work with storage based on
                std::array
              </li>
<li class="listitem">
                Fixed: weighted_mean() + weighted_mean() != weighted_mean() (discovered
                and reported by Henry Schreiner)
              </li>
<li class="listitem">
                Fixed: axis::option::test(...) returned true if any bits in the test
                mask were set (now returns true if all bits in the test mask are
                set)
              </li>
<li class="listitem">
                Protecting calls to min, max with against macro expansion
              </li>
<li class="listitem">
                Replaced all crlf with lf in concepts.qbk
              </li>
<li class="listitem">
                Missing throw of std::invalid_argument when user passes too many
                axes to histogram
              </li>
<li class="listitem">
                Corrected documentation of serialization support in concepts section
              </li>
<li class="listitem">
                Resolved warnings for various compiler versions
              </li>
</ul></div>
        </li>
<li class="listitem">
          Other
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Added Boost.Histogram logo
              </li>
<li class="listitem">
                Added missing copyright notices
              </li>
<li class="listitem">
                axis::category::value returns copy for scalar types and const reference
                otherwise
              </li>
<li class="listitem">
                std::ostringstream not used anymore to generate exception messages
                to reduces code bloat
              </li>
<li class="listitem">
                Documentation improvements
                <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
<li class="listitem">
                      Restructured overview section in documentation
                    </li>
<li class="listitem">
                      Updated user guide to demonstrate new features
                    </li>
<li class="listitem">
                      Updated accumulator examples
                    </li>
<li class="listitem">
                      Concepts explain how accumulators can optionally accept weights
                    </li>
</ul></div>
              </li>
<li class="listitem">
                Updated benchmark code
              </li>
<li class="listitem">
                New test checks consistency of b2 and cmake build systems
              </li>
<li class="listitem">
                New test checks One-Definition-Rule (fails if non-templated function
                is not declared inline)
              </li>
<li class="listitem">
                Serialization code decoupled from Boost.Serialization
              </li>
<li class="listitem">
                Removed dependency on Boost.CallableTraits
              </li>
</ul></div>
        </li>
</ul></div>
<h4>
<a name="histogram.history.h5"></a>
      <span class="phrase"><a name="histogram.history.boost_1_71"></a></span><a class="link" href="history.html#histogram.history.boost_1_71">Boost
      1.71</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          New features
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                Thread-safe accumulators boost::histogram::accumulators::thread_safe
                based on std::atomics
              </li>
<li class="listitem">
                Support for thread-safe storages
              </li>
<li class="listitem">
                Support for compiling without exceptions/RTTI (increases performance
                by 10-20 %) [with contributions from Glen Fernandez]
              </li>
<li class="listitem">
                Performance improvements for 1D and 2D histograms
              </li>
<li class="listitem">
                boost::histogram::indexed now returns forward iterator range instead
                of input iterator range
              </li>
<li class="listitem">
                boost::histogram::indexed_range::accessor is now non-copyable and
                acts like reference to cell value, making most algorithms from the
                stdlib work
              </li>
<li class="listitem">
                boost::histogram::algorithm::reduce
                <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
<li class="listitem">
                      New slice option
                    </li>
<li class="listitem">
                      Fuse shrink, slice, and rebin options passed for the same axis
                    </li>
<li class="listitem">
                      Support histograms with some axis types with reduction support
                    </li>
</ul></div>
              </li>
<li class="listitem">
                boost::histogram::algorithm::project accepts runtime indices for
                static histograms
              </li>
</ul></div>
        </li>
<li class="listitem">
          Fixes
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                boost::histogram::algorithm::reduce also works on histograms that
                have some axis types without reduction support
              </li>
<li class="listitem">
                boost::histogram::axis::traits::update now works correctly for boost::histogram::axis::variant
              </li>
</ul></div>
        </li>
<li class="listitem">
          Other
          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
                100 % test coverage
              </li>
<li class="listitem">
                Drastically reduced internal Boost dependencies
              </li>
<li class="listitem">
                Improved documentation and examples
              </li>
<li class="listitem">
                Internally replaced boost::variant with boost::variant2
              </li>
<li class="listitem">
                boost::histogram::axis::traits::is_reducible detects reducible axis
                types
              </li>
<li class="listitem">
                Cleanup and refactoring of internals
              </li>
<li class="listitem">
                Guarantee no-throw moves for all builtin axis types
              </li>
<li class="listitem">
                Improved internal benchmarks
              </li>
<li class="listitem">
                Compile cleanly at higher warning levels
              </li>
</ul></div>
        </li>
</ul></div>
<h4>
<a name="histogram.history.h6"></a>
      <span class="phrase"><a name="histogram.history.boost_1_70"></a></span><a class="link" href="history.html#histogram.history.boost_1_70">Boost
      1.70</a>
    </h4>
<p>
      First Boost release, version 4.0 in former internal counting.
    </p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          Removed Python bindings, will be developed in separate repository
        </li>
<li class="listitem">
          All axes can be made optionally circular, except category axis
        </li>
<li class="listitem">
          All axes now support generic attached metadata
        </li>
<li class="listitem">
          All axes have now independently configurable underflow/overflow extra bins
        </li>
<li class="listitem">
          Removed circular axis (which is just a circular regular axis)
        </li>
<li class="listitem">
          Added indexed adaptor generator for convenient and fast iteration over
          histograms
        </li>
<li class="listitem">
          Support for axes that can grow in range
        </li>
<li class="listitem">
          Support for axes which accept multiple values (example: hexagonal binning)
        </li>
<li class="listitem">
          Support for profiles and more generally, arbitrary accumulators in each
          cell
        </li>
<li class="listitem">
          Support for serializing to xml archives
        </li>
<li class="listitem">
          Added compatibility with Boost.Range, Boost.Units, and Boost.Accumulators
        </li>
<li class="listitem">
          Added deduction guides for axis types and histogram
        </li>
<li class="listitem">
          Performance improvements
        </li>
<li class="listitem">
          Renamed <code class="computeroutput"><span class="identifier">adaptive_storage</span></code>
          to <code class="computeroutput"><span class="identifier">unlimited_storage</span></code>
        </li>
<li class="listitem">
          Replaced <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_int</span></code> with custom type to decouple
          libraries
        </li>
<li class="listitem">
          Internal simplification of <code class="computeroutput"><span class="identifier">axis</span><span class="special">::</span><span class="identifier">variant</span></code>
        </li>
<li class="listitem">
          Make all storages behave more like containers, simplifying the design
        </li>
<li class="listitem">
          Histograms supports add, sub, mul, div
        </li>
<li class="listitem">
          replaced <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></code>
          in axis with explicit method <code class="computeroutput"><span class="identifier">bin</span></code>
        </li>
<li class="listitem">
          replaced <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>
          in axis with explicit method <code class="computeroutput"><span class="identifier">index</span></code>
        </li>
<li class="listitem">
          replaced internal use of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">containers</span></code>
          with stdlib containers
        </li>
<li class="listitem">
          Much improved docs, reference documentation, user guide, more examples
        </li>
</ul></div>
<h4>
<a name="histogram.history.h7"></a>
      <span class="phrase"><a name="histogram.history.3_2_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.3_2_not_in_boost">3.2
      (not in Boost)</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          Allocator support everywhere
        </li>
<li class="listitem">
          Internal refactoring
        </li>
</ul></div>
<h4>
<a name="histogram.history.h8"></a>
      <span class="phrase"><a name="histogram.history.3_1_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.3_1_not_in_boost">3.1
      (not in Boost)</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          Renamed <code class="computeroutput"><span class="identifier">bincount</span></code> method
          to <code class="computeroutput"><span class="identifier">size</span></code>
        </li>
<li class="listitem">
          Support for axes with only overflow and no underflow bin
        </li>
<li class="listitem">
          category axis now by default has bin for "other" input that does
          not fall into the predefined categories, making it consistent with other
          axes
        </li>
<li class="listitem">
          NaN is now consistently put into overflow bin for all axes
        </li>
<li class="listitem">
          Eliminated warnings about safe internal conversions on MSVC
        </li>
<li class="listitem">
          Established a cpp house style with corresponding .clang-format file
        </li>
<li class="listitem">
          Better detection of Python library on all systems
        </li>
<li class="listitem">
          Improved code coverage by testing more input errors
        </li>
<li class="listitem">
          Raise ValueError instead of generic RuntimeError in Python on input errors
        </li>
</ul></div>
<h4>
<a name="histogram.history.h9"></a>
      <span class="phrase"><a name="histogram.history.3_0_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.3_0_not_in_boost">3.0
      (not in Boost)</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          Support for efficient adding of multiple histograms and scaling
        </li>
<li class="listitem">
          Re-design of category axis as a general mapping between unique values and
          bins
        </li>
<li class="listitem">
          Re-design of the bin description an axis returns upon element access
        </li>
<li class="listitem">
          Interface cleanup and simplification, more consistency between Python and
          C++ interface
        </li>
<li class="listitem">
          Iterators for histogram and axes for STL compatibility
        </li>
<li class="listitem">
          Regular axis in C++: Allowing transforms with state
        </li>
<li class="listitem">
          Regular axis in Python: Support for all C++ transforms
        </li>
<li class="listitem">
          Polymorphic axis::any type
        </li>
<li class="listitem">
          Internal refactoring from boost::mpl and boost::fusion to std::tuple and
          boost::mp11
        </li>
<li class="listitem">
          Windows support
        </li>
</ul></div>
<h4>
<a name="histogram.history.h10"></a>
      <span class="phrase"><a name="histogram.history.2_0_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.2_0_not_in_boost">2.0
      (not in Boost)</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          Added static_histogram (v1.0 only had dynamic_histogram).
        </li>
<li class="listitem">
          Merged wfill(...) and fill(...) interface.
        </li>
<li class="listitem">
          Support custom allocators in storage classes.
        </li>
<li class="listitem">
          Replaced static_storage with array_storage.
        </li>
<li class="listitem">
          Replaced dynamic_storage with unlimited_storage, which adds the capability
          to grow the bin counter into a cpp_int, thus avoiding integer overflow
          completely.
        </li>
<li class="listitem">
          Serialization uses binary_archive instead of text_archive. The latter is
          portable, but the performance is terrible.
        </li>
<li class="listitem">
          Python interface changed: histograms are now iterable, returning axis classes
        </li>
<li class="listitem">
          Support reduction (removing a subset of axes and returning the equivalent
          histogram; in other words, those axes are integrated over)
        </li>
</ul></div>
<h4>
<a name="histogram.history.h11"></a>
      <span class="phrase"><a name="histogram.history.1_0_not_in_boost"></a></span><a class="link" href="history.html#histogram.history.1_0_not_in_boost">1.0
      (not in Boost)</a>
    </h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
          First stable version.
        </li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2016-2019 Hans
      Dembinski<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
</body>
</html>
